package com.ly.lypopupwindowdemo.activity;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.ly.lypopupwindowdemo.R;
import com.ly.lypopupwindowdemo.bean.Book;
import com.ly.lypopupwindowdemo.database.MyDatabaseHelper;

import org.litepal.crud.DataSupport;
import org.litepal.tablemanager.Connector;

import java.util.List;

public class LitePalDemoActivity extends AppCompatActivity implements View.OnClickListener{

    Button create_database_btn;
    private MyDatabaseHelper dbHelper;
    private static final String TAG = "LitePalDemoActivity";



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_litepal_demo);

        dbHelper = new MyDatabaseHelper(this,"BookStore.db",null,2);
        create_database_btn = (Button) findViewById(R.id.id_create_database);
        create_database_btn.setOnClickListener(this);
        findViewById(R.id.id_add_data).setOnClickListener(this);
        findViewById(R.id.id_delete_data).setOnClickListener(this);
        findViewById(R.id.id_query_data).setOnClickListener(this);
        findViewById(R.id.id_update_data).setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.id_create_database:
                //创建
                Connector.getDatabase();//创建数据库
                Toast.makeText(this, "创建成功", Toast.LENGTH_SHORT).show();
                break;
            case R.id.id_add_data:
                //对表中的数据进行操作
                //向Book表中添加数据
            {
                Book book = new Book();
                book.setName("Harry Potter");
                book.setAuthor("JK.罗琳");
                book.setPages(800);
                book.setPrice(200);
                book.setPress("unknow");
                book.save();
            }
                break;
            case R.id.id_delete_data:
                //删除数据
            {
                /**
                 * 删除数据也是有两种方式
                 * 第一种方式是直接调用已存储对象的delete()方法就行了
                 * 直接来看第二种方式
                 */
                DataSupport.deleteAll(Book.class,"price<?","15");
            }

                break;
            case R.id.id_query_data:
                //查询数据
            {
                //查询表中所有数据
                List<Book> books  = DataSupport.findAll(Book.class);
                for (Book book:books){
                    Log.e(TAG, "onClick: book name is"+book.getName() );
                    Log.e(TAG, "onClick: book author is"+book.getAuthor() );
                    Log.e(TAG, "onClick: book price is"+book.getPrice() );
                    Log.e(TAG, "onClick: book pages is"+book.getPages() );
                    Log.e(TAG, "onClick: book press is"+book.getPress() );
                }
            }

                break;
            case R.id.id_update_data:
                //更新数据
            {
//                Book book = new Book();
//                book.setName("Java基础");
//                book.setAuthor("unknow");
//                book.setPages(900);
//                book.setPrice(80);
//                book.setPress("UnKnow");
//                book.save();
//                book.setPrice(20);
//                book.save();

                /**
                 * 运行之后Book表中会新增一条书的数据，
                 * 但是书的价格并不是80而是20.
                 * 但是这种更新方式有限制性。
                 * 所以介绍下面这种更加林巧的更新方式
                 */

                Book book = new Book();
                book.setPrice(14.5);
                book.setPress("Ancor");
                book.updateAll("name=?and autor=?","第一行代码","郭霖");
                /**
                 * updateAll如果不指定条件约束的话就是更新说有数据
                 * 当想把字段的值更新成默认值的时候book.setPages(0)是不可以的
                 * LitePal提供改了一个方法，setToDefault()方法，传入相应的列名就可以了
                 * 例如：Book book = new Book();
                 *       book.setToDefault("pages");
                 *       book.updateAll();
                 *       表示所有书的页数都更新成0，因为updateApp中没有指定条件
                 *
                 */
            }

            /**
             *
             */
                break;
            default:
                break;
        }
    }
}
